#pragma once
#include <argagg.hpp>
#include <fstream>
#include <sstream>
#include "lexer.hpp"
namespace Driver
{
    class Driver
    {
    public:
        Driver(argagg::parser_results &&args, const std::vector<std::string> &files);
        Driver(const Driver &) = delete;
        Driver &operator=(const Driver &) = delete;
        ~Driver();

    public:
        int Preprocess();
        int Compile();
        int Assemble();
        int Run();

    private:
        std::string removeFileSuffix(const std::string &);
        int runSystemCommand(const std::string &);
        std::string readFile(const std::string &);

    private:
        argagg::parser_results m_args;
        std::vector<std::string> m_files;
    };
}